package com.andy.db;

import android.content.Context;
import android.content.ContextWrapper;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.andy.utils.FilesUtil;

import java.io.File;

public class DatabaseContext extends ContextWrapper {
    /**
     * 构造函数
     * @param    base 上下文环境
     */
    public DatabaseContext(Context base){
        super(base);
        this.mContext=base;
    }
    private Context mContext;


    /**
     * 获得数据库路径，如果不存在，则创建对象对象
     * @param    name
     */
    @Override
    public File getDatabasePath(String name) {

//            String dbPath = FilesUtil.getAppDbPath() + "/" + name;//数据库路径
        //获取sd卡路径
        String dbDir = FilesUtil.getAppDbPath();

        String dbPath = dbDir+"/"+name;//数据库路径
        Log.e("andy","andy_test_getDatabasePath = " + dbPath);


        //数据库文件是否创建成功
        boolean isFileCreateSuccess = false;
        //判断文件是否存在，不存在则创建该文件
        File dbFile = new File(dbPath);
//        if(!dbFile.exists()){
//            try {
//                isFileCreateSuccess = dbFile.createNewFile();//创建文件
//            } catch (IOException e) {
//                // TODO Auto-generated catch block
//                e.printStackTrace();
//                Log.e("andy","andy_test_getDatabasePath = " + e.getMessage().toString());
//            }
//        }
//        else
//            isFileCreateSuccess = true;

//        //返回数据库文件对象
//        if(isFileCreateSuccess)
        return dbFile;
//        else
//            return null;

    }

    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) {
        return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), factory);
    }

    @Override
    public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) {
        return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name).getAbsolutePath(),factory,errorHandler);
    }

//    /**
//     * 重载这个方法，是用来打开SD卡上的数据库的，android 2.3及以下会调用这个方法。
//     *
//     * @param    name
//     * @param    mode
//     * @param    factory
//     */
//    @Override
//    public SQLiteDatabase openOrCreateDatabase(String name, int mode,
//                                               SQLiteDatabase.CursorFactory factory) {
//        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);
//        return result;
//    }
//
//    /**
//     * Android 4.0会调用此方法获取数据库。
//     *
//     * @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String, int,
//     *              android.database.sqlite.SQLiteDatabase.CursorFactory,
//     *              android.database.DatabaseErrorHandler)
//     * @param    name
//     * @param    mode
//     * @param    factory
//     * @param     errorHandler
//     */
//    @Override
//    public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory,
//                                               DatabaseErrorHandler errorHandler) {
//        SQLiteDatabase result = SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null);
//        return result;
//    }
}
